1. Technical Field of the Invention
The present invention is related to distributed computing and, more particularly, to distributed object systems.
2. Description of Related Art
Advances in computers systems have greatly simplified the task of information processing. Computer systems can typically store large amounts of information in a relatively small area of physical space and permit the information stored to be easily accessed and modified. Computer systems also allow large amounts of information to be processed both quickly and accurately.
Computer systems are sometimes operated as stand-alone devices or connected together by way of a communications medium, typically together with a server, to form a computer network. A server is a class of computers used to handle file, print, and certain application services which are common to all the connected computers, known as clients. The largest, and most popular computer network is known as the Internet. When networked together, computers can communicate information and perform processing functions. The foregoing is known as distributed computing.
Distributed computing is further facilitated by object-oriented programming. Object-oriented programming is a form of software development that models the real world through representation of objects or modules that contain data as well as instructions that work upon that data. The objects encapsulate the attributes, relationships, and methods of software-identifiable program components simplifying complex programs. Accordingly, the attributes, relationships, and methods of an object can be written, compiled, tested, and deployed independently of one another. Additionally, the different objects can be implemented in different programming languages, reside on different computers, and even different platforms in different operating system environments. A system with objects residing on different platforms is known as a distributed object system.
Distributed object systems facilitate application program development by permitting object services to be made available (published) to application programmers. Instead of requiring the application program to have each function and data of the application program performed within the application program, the application program can access certain objects performing certain functions outside the application program. In the foregoing scenario, the accessing application program is referred to as a client application and the object is referred to as a server object. However, use of a distributed object system requires the establishment of a communications standard as well as attention to various low-level networking issues. The communications and low-level networking standards, as well as many architectural and implementation features, are currently provided for by a de facto standard middleware for distributed object systems known as the Common Object Request Broker Architecture (CORBA).
In the CORBA paradigm, a client application wishing to perform an operation on a server object sends a request. The request is received by an Object Request Broker (ORB). The ORB is responsible for all of the mechanisms required to find the object implementation for the request, to prepare the object implementation to receive the request, and to communicate the data making up the request to the server object. A server object accessible by CORBA is referred to as a CORBA object. The client can make a request using either static invocation or dynamic invocation.
Static invocation is the standard approach for clients to interact with CORBA objects. However, it requires the CORBA client to use, and therefore, be in the possession of code stubs associated with the CORBA object. This requirement is undesirable in cases where the CORBA object stubs are not freely published, where clients talk to a large variety of CORBA objects, or where CORBA object interfaces change frequently.
Dynamic invocation addresses this problem by allowing clients to form and execute requests on CORBA servers on the fly, i.e., dynamically, without having to first acquire any code stubs. However, the power that CORBA and dynamic invocation offers the user comes at a price, namely, increased complexity, resulting in slower adoption by industry, particularly in view of the requisite increase in training and implementation costs and delays.
In order for a CORBA object to receive requests from client applications, the CORBA object interface must first be defined in the CORBA Interface Definition Language (IDL). This IDL interface defines the services that the CORBA server object provides, as well as, for each service, the number and type of associated arguments, return values, and any potential exceptions which may be generated. The CORBA Interface Repository is a standard CORBA server object that is responsible for storing and automatically disseminating the IDL interface of CORBA server objects to client applications. Before client applications may request a given service of CORBA objects, as defined by the respective IDL interface, that client application must first locate that CORBA object on the network. The CORBA Naming Service is a standard CORBA server object on the network responsible for facilitating CORBA object location. Currently available CORBA server objects may register themselves with the CORBA Naming Service. Client applications may then use the CORBA Naming Service to look-up particular CORBA objects from which to request a service. A well established design pattern used in the development of distributed object systems involves the use of a helper object, commonly known as a proxy, that assists a client application in communicating with a given CORBA object.
In view of the above, it should be understood that the delivery of CORBA object services requires a considerable degree of CORBA expertise by the application developer. On a separate technological path, world wide web-based information systems have achieved phenomenal success, largely because of the web""s high accessibility and ease of use. Therefore, it would be advantageous if the power of a distributed object system, such as used in CORBA-based systems, could be leveraged with the ease and accessibility of web services.
Accordingly, it is an object of the present invention to leverage the power of a distributed object system with the ease and accessibility of web services.
It is also an object of the present invention to decouple application development and server development, allowing organizations and individuals to better focus limited and expensive distributed object systems server development expertise on the development and publication of web services rather than complicated protocols, such as in CORBA.
It is a further object of the present invention to encapsulate the implementation complexity of a CORBA Dynamic Invocation Interface.
The present invention is directed to a system and method for receiving services from a server object through a web browser. The web browser is used to search a server object library by accessing a servlet engine. The servlet engine retrieves the elements stored in the library, formats the elements into a format compatible with the web browser, and transmits the elements to the web browser.